Data for companies or other organizations is commonly stored in networked storage. The networked storage center can be referred as a data center. The resources of a data center such as storage and access bandwidth are limited. Thus, a common goal for a data center is to improve utilization of the resources of the storage center, to improve storage utilization and access throughput. There may be applications within the company or organization that generate large workloads, making many access requests to the data center. Data access to storage is typically slow relative to computer processing speeds. One way to improve resource use in a data center is to provide caching, recognizing that data accessed in a workload has a greater likelihood of being accessed again relative to other data stored in the data center.
A caching system may be multi-tiered, where there are multiple layers of caching, which are coordinated. Traditionally, lower layers of cache, or the layers closer to the processing resources, have smaller size but are faster relative to the higher layers of cache. Thus, traditional cache levels decrease in size and increase in speed the closer the cache level gets to the processing resources. From the other perspective, the closer the cache level is to the client making the access request, the larger and slower it traditionally is.
Cache coherency protocols, or coordination communication among the levels of cache have an underlying assumption based on the speed and size of the cache levels. Traditional multi-tier cache protocols or traditional inclusion, exclusion approaches to cache coherency have underlying assumptions regarding cache size and speed. Deviations in cache structure would render such traditional protocols unsuitable for use with the different cache structure.
Returning to the concept of data center resource utilization, the structuring of cache systems fixes the use of resources in the system. To the extent the data access of a data center is highly dynamic, the traditional fixed structure of caches can hinder performance as often as it improves performance. The traditional fixed structure results in redundancy of data and redundancy of caching effort among cache layers. The redundancy of data consumes resources that could otherwise be preserved for other use.
In a traditional cache, the different caching levels or tiers of the cache are oblivious of the caching decisions and workload changes experienced at each of these different tiers. The different tiers of the cache are traditionally not able to obtain first-hand information about the changes at other tiers. The lack of first-hand information leads to a communication gap among the cache levels. The communication gap in turn causes each caching tier to take extra effort to speculate about the workload changes and later adapt to them. Such duplicated effort increases the adaptation time of the overall system, which decreases or nullifies the caching effort.